1. Technical Field of the Invention
The present invention relates to data communication systems. The present invention is especially applicable for transmitting data packets in such communication systems.
2. Description of the Background Art
Error control techniques are extensively used in data communication systems to restore data integrity when data is corrupted by transmission errors or is lost. Automatic-Repeat-Request (ARQ) schemes are retransmission-based error control mechanisms commonly used to deliver highly reliable data to destination.
In ARQ, an error-detecting code, a checksum for example, is used in combination with a certain retransmission protocol. Corrupted or lost data packets are transmitted repeatedly until correctly received by the receiver. Feedback information (acknowledgments), sequence numbering and timers are used to ensure correct delivery of data packets at the receiver.
TCP (Transport Control Protocol) is an example of a widely used protocol implementing an ARQ error-control mechanism. In this protocol, the sending device uses acknowledgments (ACKs) it receives to determine which data packets (segments) have reached the receiver, and provides reliability by retransmitting lost packets. The sending device identifies the loss of a packet either by the arrival of several acknowledgments acknowledging a same data packet (duplicate ACKs) or the absence of an acknowledgment for the packet before a timeout. At the receiving device, the sequence numbers are used to correctly order packets that may be received out of order and to eliminate duplicates. Damage is handled by adding parity data using an error detecting code (checksum) to each packet transmitted, checking it at the receiver, and discarding damaged packets.
One common drawback of retransmission-based error control mechanisms, including TCP one, is that the acknowledgment packets also suffer from the impairments of the communication channel. The sending device has to decide if an already transmitted data packet shall be retransmitted or not based on the available feedback information, and the unreliability of that feedback information may cause unnecessary retransmission of data packets and creation of duplicates at the receiver. In addition to a waste of channel bandwidth, duplication of data packets may further degrades transmission conditions in the communication system by aggravating congestions for example.
There exist various conditions under which even a well designed ARQ protocol leads to the reception of multiple copies of a data packet at the receiver.
For example, it may happen that an acknowledgment packet is lost. In this case, even if the data packet is correctly delivered to the receiving device, the sending device is not aware of such delivery and thus retransmits the data packet after timeout. If the retransmission is successful, the data packet is delivered twice to the receiver.
Another example relates to the use of independent error control mechanisms at different layers. Consider an end-to-end reliable transport protocol, such as TCP, which is tuned to perform well in traditional networks where packet losses occur mostly because of congestion. When some links are wireless or use any other lossy channel, they suffer from significant losses due to bit errors. Because of the significant time required to recover from losses at the link layer (generally, wireless network standards accept up to 16 retransmissions), acknowledgment or data packets belonging to the end-to-end protocol might be delayed more than usual. Even if the data packets finally reach the receiver or the corresponding acknowledgement packets reach the sending device, it's likely that the data packets are assumed to be lost by the sending device and retransmitted.
Yet another example relates to variable transmission delay that different packets may experience in a multi-path communication system which causes out of sequence reception of packets. Different packets may be transmitted over different paths. Each path may contain a different number of intermediate devices (hubs, switches, routers, and so on) and each device may be working at a different processing speed. Packets following congested paths or transferred via intermediate devices having low processing speed could experience long delays and thus can be considered as lost by end devices. TCP, for example, maintains a running average of the estimated roundtrip delay and the mean linear deviation from it. The sending device identifies the loss of a packet either by the arrival of several duplicate acknowledgments (this may happen if a packet is delayed for too long) or the absence of an acknowledgment for the packet within a predetermined period of time equal to the sum of the smoothed round-trip delay and four times its mean deviation.